package com.itany.corejava.code06_数组;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author 石小俊
 * @date 2023年04月13日 9:23
 * 定义一个int类型的数组,用于存放某个班级中所有学生的成绩,在控制台输入共有几名学生
 * 学生的成绩也由控制台进行输入
 * 求:学生成绩的最大值、最小值、平均值
 */
public class Test06_练习 {
    public static void main(String[] args) {
        test2();
    }

    /**
     * 通过数组排序的方式实现
     */
    public static void test() {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入学生数量:");
        int num = sc.nextInt();

        // 定义一个用于存放学生成绩的数组
        double[] scores = new double[num];

        // 定义一个用于接收总成绩的变量
        double sum = 0;

        // 控制台输入学生的成绩
        for (int i = 0; i < scores.length; i++) {
            System.out.print("请输入第" + (i + 1) + "名学生的成绩:");
            scores[i] = sc.nextDouble();
            sum += scores[i];
        }

        // 获取到数组之后,根据数组元素值的大小进行排序
        Arrays.sort(scores);
        System.out.println(Arrays.toString(scores));
        System.out.println("最小值:" + scores[0]);
        System.out.println("最大值:" + scores[num - 1]);
        System.out.println("平均值:" + sum / num);
    }

    /**
     * 通过比较成绩的方式实现
     */
    public static void test2() {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入学生数量:");
        int num = sc.nextInt();

        // 定义一个用于存放学生成绩的数组
        double[] scores = new double[num];

        // 定义总成绩、最大值、最小值的初始值
        // 此时的最大值初始值必须保证所有人的成绩都不会低于当前最大值
        // 此时的最小值的初始值必须保证所有人的成绩都不会高于当前最小值
        double sum = 0, max = 0, min = 100;

        // 控制台输入学生的成绩
        for (int i = 0; i < scores.length; i++) {
            System.out.print("请输入第" + (i + 1) + "名学生的成绩:");
            scores[i] = sc.nextDouble();
            sum += scores[i];
            // 判断当前成绩是否比最大值大,如果大则替换
            max = scores[i] > max ? scores[i] : max;
            // 判断当前成绩是否比最小值小,如果小则替换
            min = scores[i] < min ? scores[i] : min;
        }

        System.out.println(Arrays.toString(scores));
        System.out.println("最小值:" + min);
        System.out.println("最大值:" + max);
        System.out.println("平均值:" + sum / num);
    }
}
